package io.gitee.welson.sensitive.annotation;

import io.gitee.welson.sensitive.strategy.SensitiveStrategy;
import java.lang.annotation.*;

/**
 * 敏感字段注解，用于标记需要脱敏的字段
 *
 * @author welson
 */
@Documented
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface SensitiveField {

    /**
     * 脱敏策略类型
     */
    Class<? extends SensitiveStrategy> strategy();

    /**
     * 自定义参数，用于传递给脱敏策略的额外参数
     */
    String[] params() default {};

    /**
     * 条件表达式
     * 使用SpEL表达式控制是否进行脱敏
     * 表达式返回true时进行脱敏，返回false时不进行脱敏
     * 默认为空字符串，表示无条件进行脱敏
     */
    String condition() default "";
} 